#ifndef ANIMALWIDGET_H
#define ANIMALWIDGET_H

#include <QWidget>
#include <QSharedPointer>

#include "animal.h"

/**
 * 在 animal 相关的类中
 * 使用Animal类存储各个animal对象，是一个抽象类，Cat和Dog都是Animal的具体的子类
 * 使用AnimalManager管理所有的animal，AnimalManager使用单例模式，并且这里使用了智能指针防止内存泄漏
 * AnimalWidget是一个带ui的类，用来展示一条具体的animal类
 * AnimalShowWidget是一个带ui的类，用来展示多条AnimalWidget类，使用垂直布局可以不断添加AnimalWidget进行展示。
 *
 * 这里的实现，目前只是简单实现了添加写死了成员变量的cat和dog，后面可能需要重载qdialog实现可以自定义animal的成员变量。
 */

namespace Ui {
class AnimalWidget;
}

class AnimalWidget : public QWidget
{
    Q_OBJECT

public:
    explicit AnimalWidget(QWidget *parent = nullptr, QSharedPointer<Animal> animal = nullptr);
    ~AnimalWidget();

private:
    void init(QSharedPointer<Animal>);
    Ui::AnimalWidget *ui;
};

#endif // ANIMALWIDGET_H
